/*
 * Copyright (c) 2016. 恒昌互联网运营中心.
 */

var CAUtil={
    getBrowser:function () {
        var b = { name: "other", version: "0" }, ua = navigator.userAgent.toLowerCase();
        browserRegExp = {
            se360: /360se/,
            se360_2x: /qihu/,
            ie: /msie[ ]([\w.]+)/,
            firefox: /firefox[|\/]([\w.]+)/,
            chrome: /chrome[|\/]([\w.]+)/,
            safari: /version[|\/]([\w.]+)(\s\w.+)?\s?safari/,
            opera: /opera[|\/]([\w.]+)/
        };
        for (var i in browserRegExp) {
            var match = browserRegExp[i].exec(ua);
            if (match) {
                b.name = i;
                b.version = match[1] || "0";
                break;
            }
        }
        return b;
    },
    getOS:function () {
        var o = /(win|android|linux|nokia|ipad|iphone|ipod|mac|sunos|solaris)/.exec(navigator.platform.toLowerCase());
        return o == null ? "other" : o[0];
    }
};
var CA = {
    hasInit:0,//是否初始化页面标签data-ca属性
    arrImg:[],//用于工作的Image对象以及状态
    maxLength:4,//同时工作的Image对象最大个数
    taskQueue:[],//需要排队等候的任务
    //初始化：监听body的mousedown事件，发送符合规则的埋点信息
    //仅作用于一个带有data-ca属性的节点（被点击的节点或者最靠近其的父节点）。
    test:function(){
        alert(1)
    },
    init:function(){
        var me=this;
        if(me.hasInit || $("body").size()==0) return;
        $("body").bind("mousedown",function(e) {
            var o = $(e.target);
            while (o.length > 0) {
                if (o[0] == $("body")[0]) break;
                //点击object标签会引发异常
                try {

                    var spm = o.attr("data-ca");
                    if (spm) {
                        var params = {};
                        params.event="pv";
                        if(_ext){
                            params.platform=_ext.platform || '-';
                            params.userId=_ext.userId || '-';
                        }
                        params.spm=spm||'-';
                        params.event="click";
                        if(document) {
                            params.domain = document.domain || '';
                            params.url = document.URL || '';
                            params.title = document.title || '';
                            params.referrer = document.referrer || '';
                        }
                        me.log(params);
                        return true;
                    }
                } catch(err) {}
                o = o.parent();
            }
        });
        me.hasInit=1;
    },
    log : function(params){
        var me=this;
        //拼接参数串
        var args = '';
        for(var i in params) {
            if(args != '') {
                args += '&';
            }
            args += i + '=' + encodeURIComponent(params[i]);
        }
        //alert(JSON.stringify(params) )
        me.send("http://10.150.24.13:8090/ca.gif?" + args);
    },
    send:function(url){
        //如果参数为空，则不处理
        if(typeof(url)=="undefined" || url=="") return;
        var me=this,img,imgHandler,arrImg,len=0,index=-1;
        arrImg=me.arrImg;
        len=arrImg.length;
        //查询可用的Image对象
        for(var i=0;i<len;i++){
            if(arrImg[i].f==0){
                index=i;
                break;
            }
        }
        //取出或者生成Image对象
        if(index==-1){
            if(len==me.maxLength){
                me.taskQueue.push(url);
                return ;
            }
            img=$(new Image());
            arrImg.push({f:1,img:img});
            index=(len==0?0:len);
        }else{
            img=arrImg[index].img;
        }
        //标记Image对象为正在使用状态
        arrImg[index].f=1;
        //记录所使用的Image对象的位置
        img.data("vid",index);
        imgHandler = function(){
            var vid=$(this).data("vid");
            if(vid>=0){
                arrImg[vid].f=0;
            }
            if(me.taskQueue.length>0){
                me.send(me.taskQueue.shift());
            }
        };
        img.unbind().load(imgHandler).error(imgHandler);
        $(img).attr("src",url);
    }
};
CA.init();
(function () {
    var params = {};
    //Document对象数据
    if(document) {
        params.domain = document.domain || '';
        params.url = document.URL || '';
        params.title = document.title || '';
        params.referrer = document.referrer || '';
    }
    //Window对象数据
    if(window && window.screen) {
        params.sh = window.screen.height || 0;
        params.sw = window.screen.width || 0;
        params.color = window.screen.colorDepth || 0;
    }
    //navigator对象数据
    if(navigator) {
        //params.lang = navigator.language || '';
    }

    params.os=CAUtil.getOS();
    var browser=CAUtil.getBrowser();
    if(browser){
        params.browser=browser.name+browser.version;
    }
    params.charset= document.charset || document.characterSet || "-";
    params.event="pv";
    if(_ext){
        params.platform=_ext.platform || '-';
        params.userId=_ext.userId || '-';
        params.spm=_ext.spm|| '-';
    }
    params.time=(new Date()).getTime();

    alert(JSON.stringify(params) )
    //拼接参数串
    var args = '';
    for(var i in params) {
        if(args != '') {
            args += '&';
        }
        args += i + '=' + encodeURIComponent(params[i]);
    }

    //通过Image对象请求后端脚本
    var img = new Image(1, 1);
    alert(args)
    img.src = 'http://10.150.24.13:8090/ca.gif?' + args;
})();



